# 导入openpyxl库，它是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库
import openpyxl

# 创建一个新的工作簿对象
wb = openpyxl.Workbook()

# 获取当前激活的工作表（通常是默认的工作表，通常命名为"Sheet"）
ws = wb.active

# 在工作簿中创建一个名为'mysheet01'的新工作表，并将其放在索引为1的位置（即在默认工作表之后）
W1 = wb.create_sheet('mysheet01', 1)

# 在工作簿中创建一个名为'mysheet02'的新工作表，并将其放在索引为2的位置（即在'mysheet01'之后）
W2 = wb.create_sheet('mysheet02', 2)

# 将'mysheet02'工作表移动到索引为-2的位置，即移动到工作簿的第二个位置（索引从0开始）
# 这实际上是将'mysheet02'移动到'mysheet01'之前
wb.move_sheet('mysheet02', -2)

# 复制名为'mysheet01'的工作表，并将副本添加到工作簿中
# 注意：这里复制的工作表没有指定新的名称，所以它将自动获得一个默认名称（如'mysheet01 Copy'）
NEW_ST = wb.copy_worksheet(W1)

# 初始化一个变量num，用于填充单元格的值
num = 1

# 使用两个嵌套的for循环遍历工作表ws中的单元格
# 从第4行到第15行（包括），从第3列到第20列（包括）
for c in range(4, 16):
    for t in range(3, 21):
        # 在指定的单元格中设置值num
        ws.cell(row=c, column=t, value=num)
        # 递增num的值，以便下一个单元格有不同的值
        num = num + 1

    # 定义一个单元格范围ad，它包含ws工作表中从D5到G10的单元格
ad = ws["D5:G10"]

# 打印ad范围（这实际上不会显示单元格的值，只会显示这个范围的表示）
print(ad)

# 将修改后的工作簿保存到名为'date0418.xlsx'的文件中
wb.save('./date0418.xlsx')